Notes about PASID (Process Address Space ID)
PASID (Process Address Space ID) is an optional feature that enables sharing of a single Endpoint device across multiple processes(multiple address spaces per device) while providing each process a complete 64-bit virtual address space. PASID is used to identify process address space.
A PASID is a PCIe-defined Transaction Layer Packet (TLP) prefix. A PASID is a 20-bit number allocated and managed by the OS. PASID is included in all transactions between the platform and the device.
The IOMMU driver allocates a PASID and the device uses it in DMA transactions.
总结:(考虑非虚拟化的情况)在Intel平台下,由设备发起的I/O虚拟地址(IOVA,可以认为是host virtual address)需要IOMMU转化为host physical address。
IOMMU PASID Table: Per-device table by hardware design!
上图中,红框标注的即为IOMMU PASID table。
参考资料: